#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int row;
int col;
int **matrix;
void clearBuffer(){
	char c;
	while((c=fgetc(stdin))!='\n');
}

int* strArrIntArr(char *ptr){
	int *arr=(int*)malloc(sizeof(int)*col);
	int local=0;
	int pos=0;
	char *c=ptr;
	while(*c!='\0'){
		if(*c==' '){
			arr[pos]=local;
			local=0;
			pos++;
			}
		else{
		local=local*10+(*c-48);	
		}
		c++;
	}
	arr[pos]=local;
	return arr;
}

void read(){
	int i,j;
	char *line=(char*)malloc(sizeof(char)*100);
	clearBuffer();
	for(i=0;i<row;i++){	
		gets(line);
		matrix[i]=strArrIntArr(line);
	}
	
}
void display(int **matrix, int row,int col){
	int i=0;
	int j=0;
	for(i=0;i<row;i++){
		for(j=0;j<col;j++){
			printf("%d ",matrix[i][j]);
		}
		printf("\n");
	}
	
}

void reorder(){
	int i=0;
	int j=0;
	int temp;
	for(i=0;i<row;i++){
		for(j=0;j<col/2;j++){
				temp=matrix[i][j];
				matrix[i][j]=matrix[i][col-1-j];
				matrix[i][col-1-j]=temp;
		}
	}
}
void transpose(){
	int i=0;
	int j=0;
	int temp;
	for(i=0;i<row;i++){
		for(j=0;j<i;j++){
			temp=matrix[i][j];
			matrix[i][j]=matrix[j][i];
			matrix[j][i]=temp;
		}
	}
}
int main(){
	int i=0;
	scanf("%d",&row);
	scanf("%d",&col);
	if(row!=col)exit(0);
	matrix=(int**)malloc(sizeof(int*)*row);
	for(i=0;i<col;i++){
		matrix[0]=(int*)malloc(sizeof(int)*col);
	}
	
	read();
	reorder();
	transpose();
	printf("\nRotated by 90 degree\n");
	display(matrix,row,col);
}
